# -*- coding: utf-8 -*-
'''第二章,列表和元祖'''

#索引0是第一个，-1是倒数第一个
greeting="Hello"
print greeting[0]
print greeting[-1]
print greeting[-2]

months=['1月','2月','3月','4月','5月','6月','7月','8月','9月','10月','11月','12月']
#下面会把各个[]组合成一个[]
day_endings=['st','nd','rd']+17*['th']+['st','nd','rd']+7*['th']+['st']

#input会严格区分输入的Python类型
#year=input('input year:')
#month=input('input month:')
#day=input('input day:')

#print str(year)+'年,'+months[month-1]+','+str(day)+day_endings[day-1]

numbers=[1,2,3,4,5,6,7,8,9]
#提取下标2,3（注意不包括4），，[n,m]的提取范围是n ~ m-1
print numbers[2:4]
#提取从倒数第三位开始的所有值
print numbers[-3:]
#提取下标3之前的所有
print numbers[:3]
#步长，每隔n个元素提取
print numbers[::2]
print numbers[0:9:2]
#步长为负，从右到左提取
#-1可以用来倒序
print numbers[::-1]

# +连接会返回一个新列表
print [1,2,3]+[3,4,5]

print [None]*10

print 'a' in ['a','b','c']
print 's' in 'abcdefg'

names=['zhangsan','lisi','wangwu','zhaoliu']
#改变列表元素
names[1]='huangzong'
print names
#删除元素,方法一
del names[0]
print names
#删除元素,方法二0
names.pop(0)
print names

del names[0:1]
print names

#append,末尾追加一个元素
names.append('liubei')
names.append('zhaoyun')
names.append('zhaoyun')
print names

#count,统计某个元素在列表中出现的次数
print names.count('zhaoyun')

#extend,在末尾追加一个列表
names.extend(['a','b'])
print names

#index,找出某个元素在列表中第一个匹配项的下标位置
print names.index('a')

#insert,在指定位置插入
names.insert(1,'number1')
print names

#pop，移除
print names.pop()
print names.pop(len(names)-1)
print names

#remove,移除在某个元素在列表中的第一个匹配项
names.remove('zhaoyun')
print names

#reverse,倒序,改变了列表，但不返回值,要返回值可以用reversed
names.reverse()   #或者  names[::-1]
print names

#sort，sorted排序
x=[10,2,8,4,3,8,0]
#复制，直接y=x是没用的的，因为这样就让x和y都指向同一个列表了
y=x[:]
y.sort()
print 'x=',x
print 'y=',y
#另一种返回已排序列表副本的方法
z=sorted(x)
print 'z=',z 

#list可以转化为列表
print list('Hello')


'''元组，不可改变'''
print (1,2,3)
print ()
#只有一个元素的元组要这样做，不然会理解为数学意义上的（）
print (1,)

#tuple可转化为元组
print tuple('Hello')